The number 1406357289 is a 0 to 9 pandigital number because it is made up of each of the digits 0 to 9 in some order, but it also has a rather interesting sub-string divisibility property.
Let $d_1$ be the 1st digit, $d_2$ be the 2nd digit, and so on. In this way, we note the following:
Find the sum of all 0 to 9 pandigital numbers with this property.
In [1]:
def f(v = (), len_v = 0):
primes = [2, 3, 5, 7, 11, 13, 17]
if len_v == 0 or (not(v[-1] in v[:-1]) and (len_v < 4 or (v[-3]*100 + v[-2]*10 + v[-1]) % primes[len(v)-4] == 0)):
if len_v == 10:
yield v
else:
for d in range(10):
for w in f(v+(d,), len_v + 1):
yield w
print(sum(sum(v[i]*10**(9-i) for i in range(10)) for v in f()))
In [ ]: